package br.edu.univas.es2012.controller;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import br.edu.univas.es2012.listeners.DadosPacientes;
import br.edu.univas.es2012.model.DAOException;
import br.edu.univas.es2012.model.PacientesDAO;
import br.edu.univas.es2012.model.PacientesTO;
import br.edu.univas.es2012.view.FrameConsultaPacientes;
import br.edu.univas.es2012.view.FrameEditarPacientes;

public class ControllerEditarPacientes {
	
	private PacientesDAO pacientesDAO;
	private FrameEditarPacientes frameEditarPacientes;
	private FrameConsultaPacientes frameConsultaPacientes;
	
	public ControllerEditarPacientes(PacientesDAO pacientesDAO, FrameConsultaPacientes frameConsultaPacientes) {
		this.pacientesDAO = pacientesDAO;
		this.frameConsultaPacientes = frameConsultaPacientes;
		
	}
	
	public void editarCadastro(PacientesTO pacientesTO){
		frameEditarPacientes = new FrameEditarPacientes();
		frameEditarPacientes.getPanelDadosPacientes().setPacientesTO(pacientesTO);
		frameEditarPacientes.addDadosEdicaoPacientes(new DadosPacientes() {
			
			@Override
			public void incluirPaciente() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void dadosGravados(PacientesTO pacientesTO) {
				editarPacientes(pacientesTO);
				frameEditarPacientes.dispose();
				try{
					ArrayList<PacientesTO> pacientes = pacientesDAO.listarTodosPacientes();
					frameConsultaPacientes.limpaDadosPacientes();
					frameConsultaPacientes.setCadastroPacientesListener(pacientes);
				}catch(DAOException e){
					e.printStackTrace();
				}
				
			}
			
			@Override
			public void dadosCancelados() {
				frameEditarPacientes.dispose();
				
			}
		});
		frameEditarPacientes.setResizable(false);
		frameEditarPacientes.setLocationRelativeTo(null);
		frameEditarPacientes.setVisible(true);
	}
	
	private void editarPacientes(PacientesTO pacientesTO) {

		try {
			pacientesDAO.editarPaciente(pacientesTO);
		} catch (DAOException e) {
			JOptionPane.showMessageDialog(null, "Ocorreu o Seguinte ERRO: "
					+ e.getMessage());
			e.printStackTrace();
		}
	}

}
